package persistence.transferPOJOs.produkte;

import java.sql.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import persistence.dataAccessObjects.interfaces.IRating;
import utils.ServletUtilities;




public class Utensil extends Produkt implements IRating,java.io.Serializable{
	
	private String zugehoerigkeit;
	private String material;
	
	public Utensil() {}
	
	public Utensil(	int id, String bezeichnung, String beschreibung,
					String hersteller, Date herstellungsdatum, String imgURL, String anbieter,
					String zugehoerigkeit, String material, float rating) 
	{
		super(id, bezeichnung, beschreibung, hersteller, herstellungsdatum, imgURL, anbieter, rating);
		this.zugehoerigkeit	= zugehoerigkeit;
		this.material 		= material;
		this.type			= ProductType.UTENSIL;
	}

	/**
	 * Erzeugt Kopie mit Daten von Parameter-Instanz.
	 * @param source Datenquelle.
	 * @return Neue Instanz.
	 */
	public static Utensil generateCopy(final Utensil source) {
		// Neue Instanz mit Daten von Source erstellen.
		return new Utensil(	source.id, source.bezeichnung, source.beschreibung, source.hersteller, 
							source.herstellungsdatum, source.imgURL, source.anbieter,
							source.zugehoerigkeit, source.material, source.rating);
	}
	
	public String getZugehoerigkeit() {
		return zugehoerigkeit;
	}

	public void setZugehoerigkeit(String zugehoerigkeit) {
		this.zugehoerigkeit = zugehoerigkeit;
	}

	public String getMaterial() {
		return material;
	}

	public void setMaterial(String material) {
		this.material = material;
	}
	
	

	@Override
	public float getRating() {
		return this.rating;
	}

	@Override
	public void setRating(float rating) {
		this.rating = rating;
		
	}

	@Override
	public String toString() {
		return super.toString() + "Utensil [zugehoerigkeit=" + zugehoerigkeit + ", material="
				+ material + ", averageRating=" + rating
				+ "]";
	}
	
	/**
	 * Generiert aus Formulardaten eine Utensilinstanz. Geht davon aus, dass Formularfelder namensgleich zu Klassenattributen sind.
	 * <br>Anmerkung: ID ist auto-increment, wird daher nicht in Formular abgefragt.
	 * @param request
	 * @param response
	 * @param userEmail
	 * @return Utensilinstanz aus Formulardaten.
	 */
	public static Utensil createUtensilFromFormData(HttpServletRequest request, HttpServletResponse response, String userEmail) {
		String bezeichnung		= request.getParameter("bezeichnung");
		String beschreibung		= request.getParameter("beschreibung");
		String hersteller		= request.getParameter("hersteller");
		Date herstellungsdatum	= ServletUtilities.getDateParameter(request, "herstellungsDatum", new Date(0));
		// imgURL-Angabe: Soll in Endversion hochgeladen werden, vorerst leer
		String imgURL 			= ""; // Integer.parseInt(request.getParameter("plz"));
		// Aus Cookie (ID des aktuell eingeloggten Users) abfragen
		String anbieter			= userEmail;
		String zugehoerigkeit	= request.getParameter("zugehoerigkeit");
		String material			= request.getParameter("material");
		float rating			= 0;
		
		return (new Utensil(	-1, bezeichnung, beschreibung, hersteller,
								herstellungsdatum, imgURL, anbieter,
								zugehoerigkeit, material, rating));
	}
}
